#include <iostream>

template<typename T>
void func(T&) {
    std::cout << "void func(T&)" << std::endl;
}

template<typename T>
void func(T&&) {
    std::cout << "void func(T&&)" << std::endl;
}

int main() {
    {
        auto l = [](auto t) {
            func(t);
        };
    }

    auto l = [](auto&& t) {
        func(std::forward<decltype(t)>(t));
    };

    l(19);

    int i = 10;
    l(i);

    return 0;
}